#define _CRT_SECURE_NO_WARNINGS


#include<iostream>
#include<vector>
using namespace std;


class Solution {
public:
    int lengthOfLongestSubstring(string s) {

        int n = s.size();

        string::iterator left = s.begin();
        string::iterator right = s.begin() + 1;

        int cur = 1;
        int start = 0;
        int len = 0;
        while (cur < n)
        {
            while (cur < n && s.begin() + cur == find(s.begin() + start, s.begin() + cur, s[cur]))
            {
                cur++;
            }
            int next_start = s.find(start, s[cur]) + 1;
            if (cur - start > len)
            {
                len = cur - start;
            }
            start = next_start;
            cur++;
        }

        return len;
    }
};


//
//class Solution {
//public:
//    int lengthOfLongestSubstring(string s) {
//        if (s.size() == 0)
//        {
//            return 0;
//        }
//        int n = s.size();
//
//        int cur = 1;
//        int start = 0;
//        int len = 1;
//        while (cur < n)
//        {
//            while (cur < n && s.begin() + cur == find(s.begin() + start, s.begin() + cur, s[cur]))
//            {
//                cur++;
//            }
//            if (cur - start > len)
//            {
//                len = cur - start;
//            }
//
//            while (s[start] != s[cur])
//            {
//                start++;
//            }
//            start++;
//            cur++;
//        }
//
//        return len;
//    }
//};

int main()
{
    string s1("abcabcbb");
    int x = Solution().lengthOfLongestSubstring(s1);
    return 0;
}